à
는 한글자일까? 아니다. 유니코드는 저 글자를 a
와 '
두개의 글자의 조합으로 표현한다. (a
는 U+0061
이고, 악센트는 U+0300
이다).
정규표현식 ^.$
로 위의 글자를 매칭하면 a
만 인식한다.
방금 한글자가 아니라고 했는데, 사실 한글자일 수도 있다. 유니코드 U+00E0
는 à
를 나타낸다. 왜 두 가지 방식으로 표현되는 걸까? 예전의 글자 모음(character set)은 악센트가 표기된 라틴 글자를 하나로 encoding 했었다. 쉽게 말하자면 옛날 자판에는 à를 직접 입력하는 키가 있었다. 즉, 한글자 악센트의 라틴 글자는 레거시다.
\X
는 유니코드 버전의 모든 문자를 대치할 수 있는 정규표현식이다. 하지만 개행 문자까지 매칭하기 때문에 그냥 쓰기에는 번거롭다. 편하게 유니코드 문자를 인식할 수 있는 방법은 없을까?
개발을 하는 사람은 모두 알겠지만 .
은 한글자를 매칭하는 정규표현식이다. 그런데 유니코드 문자의 경우 악센트와 같은 부분이 한글자를 차지하기 때문에 제대로 인식하지 못한다.
이를 해결하는 방법 중 하나는 [[유니코드 정규화]]다.